home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / gnu / dirent.lha / dirent / closedir.c next >
C/C++ Source or Header  |  1988-11-14  |  672b  |  43 lines

  1. /*
  2.     closedir -- close a directory stream
  3.  
  4.     last edit:    11-Nov-1988    D A Gwyn
  5. */
  6.  
  7. #ifdef unos
  8. #include    <errno.h>
  9. #else
  10. #include    <sys/errno.h>
  11. #endif
  12. #include    <sys/types.h>
  13. #include    <dirent.h>
  14.  
  15. typedef char    *pointer;        /* (void *) if you have it */
  16.  
  17. extern void    free();
  18. extern int    close();
  19.  
  20. extern int    errno;
  21.  
  22. #ifndef NULL
  23. #define    NULL    0
  24. #endif
  25.  
  26. int
  27. closedir( dirp )
  28.     register DIR    *dirp;        /* stream from opendir() */
  29. {
  30.     register int    fd;
  31.  
  32.     if ( dirp == NULL || dirp->dd_buf == NULL )
  33.         {
  34.         errno = EFAULT;
  35.         return -1;        /* invalid pointer */
  36.         }
  37.  
  38.     fd = dirp->dd_fd;        /* bug fix thanks to R. Salz */
  39.     free( (pointer)dirp->dd_buf );
  40.     free( (pointer)dirp );
  41.     return close( fd );
  42. }
  43.